﻿/*
*   忽略页面中的所有脚本错误提示
*/
function killErrors() {
    return true;
}
window.onerror = killErrors;



//清除资源窗口内控件的内容
function clearControl(res, col) {
    for (var i = 0; i < col.length; i++)//初始化窗口
    {
        var objCol = res + '_' + col[i].name;
        if (document.getElementById(objCol).tagName.toUpperCase() == "SELECT") {
            document.getElementById(objCol).selectedIndex = 0;
        }
        else {
            document.getElementById(objCol).value = '';
        }
    }
}
//将查询结果填充到资源窗口的控件内
function fillControl(res, dt, col) {
    if (dt.rows != null) {
        for (var i = 0; i < col.length; i++)//初始化窗口
        {
            if (col[i].dataType == "Date") {
                document.getElementById(res + '_' + col[i].name).value = dt.rows[0][col[i].name] == null ? '' : dt.rows[0][col[i].name].format("yyyy-MM-dd");
            }
            else {
                document.getElementById(res + '_' + col[i].name).value = dt.rows[0][col[i].name] == null ? '' : dt.rows[0][col[i].name];
            }
        }
    }
}
/*
*  获取URL中的参数的值
*  @param para 参数名称
*/
function getValueOfURLParamter(para) {
    var value = '';
    var args = window.location.href.substring(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < args.length; i++) {
        if (args[i].substring(0, args[i].indexOf('=')).toUpperCase() == para.toUpperCase()) {
            value = args[i].substring(args[i].indexOf('=') + 1);
            break;
        }
    }
    return value;
}
function round(v, e)   //将v精确到小数点后e位
{
    var t = 1;
    e = Math.round(e);
    for (; e > 0; t *= 10, e--);
    for (; e < 0; t /= 10, e++);
    return Math.round(v * t) / t;
}

/*
*   校验值是否为null,undefined和''
*   @param  v  需要校验的值
*   @param  z   是否需要校验为零，如果为true，则需要校验该值是否为零，如果为false则不校验
*/
function checkValue(v, z) {
    if (z) {
        if (v == null || v == undefined || (!v) || v == 0) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        if (v == null || v == undefined || (!v)) {
            return false;
        }
        else {
            return true;
        }
    }
}

//获取对象
var _ = function() {
    var elements = new Array();
    var length = arguments.length;
    //查找作为参数提供的所有元素
    for (var i = 0; i < length; i++) {
        var element = arguments[i];
        //如果该参数是一个字符串那假设它是一个ID
        if (typeof element == 'string') {
            element = document.getElementById(element);
        }
        //如果只提供一个参数
        //则立刻返回这个元素
        if (length == 1) {
            return element;
        }
        //否则将它添加到数组中 
        elements.push(element);
    }
    //返回包含多个被请求元素的数组
    return elements;
}


//给创建的对象赋值，并加载子元素返回
/*
调用：
createObj(eleTd = document.createElement('td'), {
innerHTML: "&nbsp"
});
*/
function createObj(target, options) {
    for (var i in options) {
        target[i] = options[i];
    }
    return target;
}


/*
*   获取点的垂直位置    由于offsetTop只是相对于对象的上级节点位置,所以需要循环获取上级节点的位置
*   @param  obj     需要获取垂直位置的节点对象
*/
function getYPosition(obj) {
    var y = obj.offsetTop;
    while (obj = obj.offsetParent) {
        y += obj.offsetTop;
    }
    return y;
}
/*
*   获取点的水平位置    由于offsetTop只是相对于对象的上级节点位置,所以需要循环获取上级节点的位置
*   @param  obj     需要获取水平位置的节点对象
*/
function getXPosition(obj) {
    var x = obj.offsetLeft;
    while (obj = obj.offsetParent) {
        x += obj.offsetLeft;
    }
    return x;
}

/*
*   JavaScript执行EXE文件
*   @param  path    需要执行的文件的路径
*/
function runExecutable(path) {
    var executableFullPath = path;
    try {
        var shellActiveXObject = new ActiveXObject("WScript.Shell");
        if (!shellActiveXObject) {
            alert('Could not get reference to WScript.Shell');
            return;
        }
        shellActiveXObject.Run(executableFullPath, 1, false);
        shellActiveXObject = null;
    }
    catch (errorObject) {
        //alert('Error:\n' + errorObject.message);
        alert('调用程序' + executableFullPath + '出错!');
    }
}

/*
*   对对象添加事件
*   @param  o   对象
*   @param  e   事件 如:onclick
*   @param  f   操作 如:alert()
*/
function addE(o, e, f) {
    if (window.addEventListener) { // Mozilla, Netscape, Firefox
        o.addEventListener(e, f, false);
    } else { // IE
        o.attachEvent(e, f);
    }
}

/*写TXT文件*/
/*
*   content 文件内容
*/
function WriteTxt(content) {
    var fso = new ActiveXObject('Scripting.FileSystemObject');
    var f = fso.createtextfile('C:\\userinfo.txt', 2, true);
    f.writeLine(content);
    f.close();
}


/**
* 时间对象的格式化;
*/
Date.prototype.format = function(format) {
    /*
    * eg:format="YYYY-MM-dd hh:mm:ss";
    */
    var o = {
        "M+": this.getMonth() + 1,  //month
        "d+": this.getDate(),     //day
        "h+": this.getHours(),    //hour
        "m+": this.getMinutes(),  //minute
        "s+": this.getSeconds(), //second
        "q+": Math.floor((this.getMonth() + 3) / 3),  //quarter
        "S": this.getMilliseconds() //millisecond
    }

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}


/*
*   校验客户端文件是否存在
*   @param  path    本地文件路径
*   return 如果存在就返回true否则返回false
*/
function checkLocalFile(path) {
    try {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        if (fso.FileExists(path)) {

            return true;
        }
        else {
            return false;
        }
    }
    catch (e) {
        return false;
    }
}

/*
*   校验服务器端文件是否存在
*/
function checkServerFile(path) {
    try {
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.open("GET", path, false);
        xmlhttp.send();
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                return true;
            }

            else if (xmlhttp.status == 404) {
                return false;
            }
            else {
                return false;
            }
        }
    }
    catch (e) {
        return false;
    }
}

/*
*   异步服务器数据
*/
function getServerData(path) {
    try {
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.open("GET", path, false);
        xmlhttp.send();
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                return xmlhttp.responseText;
            }
            else {
                return '';
            }
        }
    }
    catch (e) {
        return '';
    }
}

/*
*   字符串去除空格
*/
String.prototype.Trim = function() {
    return this.replace(/(^s*)|(s*$)/g, "");
}

String.prototype.LTrim = function() {
    return this.replace(/(^s*)/g, "");
}

String.prototype.RTrim = function() {
    return this.replace(/(s*$)/g, "");
}


/*
*   数组对象增加操作
*/
/*查找第一个*/
Array.prototype.indexOf = function(substr, start) {
    var ta, rt, d = '\0';
    if (start != null) { ta = this.slice(start); rt = start; } else { ta = this; rt = 0; }
    var str = d + ta.join(d) + d, t = str.indexOf(d + substr + d);
    if (t == -1) return -1; rt += str.slice(0, t).replace(/[^\0]/g, '').length;
    return rt;
}
/*查找最后一个*/
Array.prototype.lastIndexOf = function(substr, start) {
    var ta, rt, d = '\0';
    if (start != null) { ta = this.slice(start); rt = start; } else { ta = this; rt = 0; }
    ta = ta.reverse(); var str = d + ta.join(d) + d, t = str.indexOf(d + substr + d);
    if (t == -1) return -1; rt += str.slice(t).replace(/[^\0]/g, '').length - 2;
    return rt;
}
/*替换*/
Array.prototype.replace = function(reg, rpby) {
    var ta = this.slice(0), d = '\0';
    var str = ta.join(d); str = str.replace(reg, rpby);
    return str.split(d);
}
/*查找*/
Array.prototype.search = function(reg) {
    var ta = this.slice(0), d = '\0', str = d + ta.join(d) + d, regstr = reg.toString();
    reg = new RegExp(regstr.replace(/\/((.|\n)+)\/.*/g, '\\0$1\\0'), regstr.slice(regstr.lastIndexOf('/') + 1));
    t = str.search(reg); if (t == -1) return -1; return str.slice(0, t).replace(/[^\0]/g, '').length;
}
